﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using SERIX.Classes;
using System.Data.OracleClient;
using System.Collections.Generic;
using SERIX.Report;

namespace SERIX
{
    public partial class ReportProgramacao : Seguranca
    {
        String Relatorio;
        System.Data.DataSet ds = new System.Data.DataSet();
        
        protected void Page_Load(object sender, EventArgs e)
        {
            base.OnLoad(e);
            if (!Page.IsPostBack)
            {
                int anoLiberado = CPlanejamento.AnoProgramacaoCorrente(this.usuAut.Login);
                int ano = DateTime.Now.Year;
                for (int i = ano - 4; i <= ano + 2; i++)
                {
                    string valor = i.ToString();
                    ddlAno.Items.Add(new ListItem(valor, valor, true));
                }
                ddlAno.SelectedValue = anoLiberado.ToString();
                Session.Add("ano", ddlAno.SelectedValue);
            }

        }

        protected void btnGerar_Click(object sender, EventArgs e)
        {
            CarregarProgramacao();            
            Response.Redirect(Report.Report.ImprimirRelatorio(ddlFormato.SelectedValue.ToString(), ds, Relatorio.ToString(), true));
        }

        void CarregarProgramacao()
        {
            ds.ReadXmlSchema(Server.MapPath("/Report/DataSet/Porgramacao.xsd"));
            OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            OracleDataAdapter dt1;
            Relatorio = "~/Report/Programacao.rpt";
            string tecnico = CTecnicos.PesquisaporCodUsu(usuAut.Codigo,usuAut.Login).Idt_tec;
            try
            {
                conn.Open();

                string Beneficiario = @"select ais.idt_AIS, pms.idt_mun, mun.nome_mun, ais.Idt_Prog,p.nom_prog, Ano_Ais, ais.idt_acao,ap.dsc_acao, ais.Idt_Ind, ind.dsc_ind, valor_Prog, valor_Prog2, valor_Prog3, 
nvl(Idt_TPo_MEd, (select Idt_TPo_MEd from srx_medidas_indicadores medInd where medind.idt_ind = ind.idt_ind and medind.ordem_mir = 1)) Idt_TPo_MEds, 
nvl(Idt_TPo_MEd2, (select Idt_TPo_MEd from srx_medidas_indicadores medInd where medind.idt_ind = ind.idt_ind and medind.ordem_mir = 2)) Idt_TPo_MEds2, 
nvl(Idt_TPo_MEd3, (select Idt_TPo_MEd from srx_medidas_indicadores medInd where medind.idt_ind = ind.idt_ind and medind.ordem_mir = 3)) Idt_TPo_MEds3, 
(select esloc.dsc_esloc from srx_escritorios_locais esloc, srx_municipios muni where esloc.idt_esloc = muni.idt_esloc and muni.idt_mun = pms.idt_mun) Esloc, 
(select tec.nom_tec from srx_tecnicos tec where tec.idt_tec = " +tecnico+@") Tecnico, 
(select tpomed.dsc_tpo_med from srx_medidas_indicadores medInd, srx_tipos_medidas tpomed where medind.idt_ind = ind.idt_ind and medind.ordem_mir = 1 and tpomed.idt_tpo_med = medind.idt_tpo_med) Dsc_tpo_med, 
(select tpomed.dsc_tpo_med from srx_medidas_indicadores medInd, srx_tipos_medidas tpomed where medind.idt_ind = ind.idt_ind and medind.ordem_mir = 2 and tpomed.idt_tpo_med = medind.idt_tpo_med) Dsc_tpo_med2, 
(select tpomed.dsc_tpo_med from srx_medidas_indicadores medInd, srx_tipos_medidas tpomed where medind.idt_ind = ind.idt_ind and medind.ordem_mir = 3 and tpomed.idt_tpo_med = medind.idt_tpo_med) Dsc_tpo_med3 
from srx_indicadores ind join srx_acoes_indicadores ais on ais.idt_ind = ind.idt_ind 
join srx_programas_municipios pms on pms.idt_prog = ais.idt_prog and pms.pms_ano = ais.ano_ais 
left join srx_programacao prog on prog.idt_AIS = ais.idt_ais and prog.idt_mun = pms.idt_mun join srx_acoes_programas ap on ais.idt_acao = ap.idt_acao 
join srx_programas p on ais.idt_prog = p.idt_prog 
join srx_municipios mun on pms.idt_mun = mun.idt_mun
where Ano_Ais = "+ddlAno.SelectedValue+" and (idt_tec is null or (not idt_tec is null and idt_Tec = "+tecnico+"))";


                /*:.....Filtros.....*/
                #region Municipios
                try
                {
                    var Lista = (List<int>)Session["List_mun"];
                    if (Lista.Count > 0)
                    {
                        Beneficiario += " and (";
                        for (int i = 0; i < Lista.Count; i++)
                        {
                            Beneficiario += " pms.idt_mun = " + Lista[i].ToString();
                            if (!(i == Lista.Count - 1))
                            {
                                Beneficiario += " or";
                            }
                        }
                        Beneficiario += ")";
                    }
                }
                catch
                {

                }
                #endregion
                #region Ações
                try
                {
                    var Lista = (List<int>)Session["List_acoes"];
                    if (Lista.Count > 0)
                    {
                        Beneficiario += " and (";
                        for (int i = 0; i < Lista.Count; i++)
                        {
                            Beneficiario += " ais.idt_acao = " + Lista[i].ToString();
                            if (!(i == Lista.Count - 1))
                            {
                                Beneficiario += " or";
                            }
                        }
                        Beneficiario += ")";
                    }
                }
                catch
                {

                }
                #endregion
                #region Indicadores
                try
                {
                    var Lista = (List<int>)Session["List_indicadores"];
                    if (Lista.Count > 0)
                    {
                        Beneficiario += " and (";
                        for (int i = 0; i < Lista.Count; i++)
                        {
                            Beneficiario += " ais.idt_ind = " + Lista[i].ToString();
                            if (!(i == Lista.Count - 1))
                            {
                                Beneficiario += " or";
                            }
                        }
                        Beneficiario += ")";
                    }
                }
                catch
                {

                }
                #endregion
                #region Programas
                try
                {
                    var Lista = (List<int>)Session["List_programas"];
                    if (Lista.Count > 0)
                    {
                        Beneficiario += " and (";
                        for (int i = 0; i < Lista.Count; i++)
                        {
                            Beneficiario += " ais.idt_prog = " + Lista[i].ToString();
                            if (!(i == Lista.Count - 1))
                            {
                                Beneficiario += " or";
                            }
                        }
                        Beneficiario += ")";
                    }
                }
                catch
                {

                }
                #endregion
                /*:.....Filtros.....*/


                dt1 = new OracleDataAdapter(Beneficiario, conn);
                dt1.Fill(ds, "Programacao");
                conn.Close();
            }
            catch (Exception e)
            {

            }
        }

        protected void ddlAno_SelectedIndexChanged(object sender, EventArgs e)
        {
            Session["ano"] = ddlAno.SelectedValue;
            List<int> Prog = new List<int>();
            List<int> Ac = new List<int>();
            Session["List_programas"] = Prog;
            Session["List_acoes"] = Ac;
            GridProgramas.DataBind();
            GridAcoes.DataBind();     
            
        }
    }
}
